import jsPDF from "jspdf";
import html2canvas from "html2canvas";

const htmlToPdf = {
  async getPdf(title, id) {
    try {
      const element = document.querySelector(id);
      const pages = element.querySelectorAll('.pdf-page');
      
      // 先创建一个临时PDF来获取第一页的尺寸
      let pdf = null;
      
      // 等待所有页面渲染完成
      const promises = Array.from(pages).map(async (page, index) => {
        const canvas = await html2canvas(page, {
          allowTaint: true,
          useCORS: true,
          logging: false,
          scale: 2.5,
          backgroundColor: '#ffffff'
        });

        // 将canvas转为图片，使用PNG格式保持更好的质量
        const imgData = canvas.toDataURL('image/png', 1.0);
        
        // 计算合适的尺寸，保持宽高比但充满宽度
        const pdfWidth = 595.28;
        const canvasRatio = canvas.width / canvas.height;
        
        // 以PDF宽度为准，按比例计算高度
        const finalWidth = pdfWidth;
        const finalHeight = pdfWidth / canvasRatio;
        const x = 0;
        const y = 0;
        
        // 根据内容高度创建PDF页面
        if (index === 0) {
          // 第一页：创建PDF实例，页面尺寸根据内容调整
          pdf = new jsPDF('p', 'pt', [finalWidth, finalHeight]);
        } else {
          // 后续页面：添加新页面，尺寸根据当前内容调整
          pdf.addPage([finalWidth, finalHeight]);
        }
        
        // 直接添加到PDF，不进行分页处理
        pdf.addImage(
          imgData,
          'PNG',
          x,
          y,
          finalWidth,
          finalHeight,
          '',
          'SLOW'
        );

        return true;
      });

      // 等待所有页面处理完成后保存
     // 等待所有页面处理完成后保存
     await Promise.all(promises);
      
     // 如果传入了title，就保存文件
    //  if (title) {
    //    pdf.save(title + '.pdf');
    //  }
     
     // 返回blob数据
     return pdf.output('blob');

    } catch (error) {
      console.error('PDF生成错误:', error);
    }
  }
};

export default htmlToPdf;

